0 図 5 展開されて作成された索引 ファイル ( 日編集 0 表示 (I) ジャンプゆプめマーク⑧ツールウインドウ ヘルプ旧 ) ・わーソルを行のも ! 嵐二動 ) ・わーソルをまに当ミを 1 ・カーソルをに上 ! 動上亠 ・わーソルを行の最ー工こ動 ・わーソルを行のー工まととユ . ・カーしを行の最住に動 ・カーソ ! しを行の最俵に動なす ・カーソルををも ; 動 ・カーソルを左も [ こ動去とす し ・カーソルを工」こ ! ・わーソルを下に小す ・カーソルを冫大落に移動 ・わーソルを : 要鬮 . こ動 ! 赴す ・わ - ソルを上工 !. コ舅動 ・カーソルを上工」と上す 図 6 同じ未のエントリの連続を削ってすっきりさせる ファイル ( E ) 編集 ) 表示 ( 辺ジャンプ 0 プマーク⑧ツールウインドウヘルプ ・カーソルを ; 」当重な ・わーソルを行の最鳳コミ ・わーソルを上 !. コ冫動 ・カーソルを行の最二宿動ー ・カーソルを行の最後に獰動 ・カーソルを左も ! こ」 し ・カーソルを下 ! ミ勤 ・カーソルを : 大要蔭 !. コミ社 ・カーソルを上上こ動 第 E p 幸引 - N 等 当 E p 索引 - N 50 ・わーソルの点減を ・カ - ソルを前上基に動 ・カーソルを行の等こ動 ・わーソルを ュメント : 完了 ( 0 け ) ーヨロ物メント実ア ( 。新砌 図 7 QuickML の索引テキスト [ メーリングリスト ] を [ 新たに ] [ 作成する ] usage . html#create [ 新しい ] [ メーリングリスト ] を [ 作成する ] usage . html#create [ メーリングリスト ] を [ 新規 ] に [ 作成する ] usage . html#create [ メーリングリスト ] へ [ メッセージ ] を [ 投稿 ] する usage . html#submit [ 自分 ] が [ 参加 ] している [ メーリングリスト ] へ [ メッセージ ] を [ 送る ] usage . html#submit [ 自分 ] が [ 参加 ] している [ メーリングリスト ] へ [ メッセージ ] を [ 送信 ] する usage . html#submit のようなエントリか得られます。これらをすべて索引項目 としておくと、、、上下 " 、、カーソル移動動かす " な ど、いろいろなキーワードによる検索が可能になります。 この結果をソートして索引らしく物杉すると、図 5 のよ うになります。もとの索引テキストは 23 行の短いもので したが、 163 項目もの索引に展開されました。 単純に単語を置換して Permuted lndex を作成する と、似たようなエントリが並んでしまう場合があります。 たとえは、図 5 では、 カーソルを下に移動 カーソルを下に動かす カーソルを次段落に移動 カーソルを次段落に動かす といったエントリか連続して並び、かなりくどい感しがし ます。同し意味のエントリか並んた場合は省略して表示す れば、もうすこし見通しがよくなるでしよう。 このような処理を加えると索引項目の数は 87 になり、 図 6 のようにすっきりします。 実サイトへの適用 この手法を応用して、お手軽メーリングリスト作成サー ビス Q ⅲ ckML. c 。 ml の索引を作成してみました。 ます、索引テキストとして図 7 のようなものを用意し ます。 このテキストを展開して索引を作成すると、図 8 ~ 9 の ような索引ページが生成されます。 47 項目の角見へのリンクが、図 7 では 157 行の説明文 て表現さこれか図 8 ~ 9 では 392 件の索引項目に展 開されています。単糸嶄算でいえは、普通に索引を作った 場合にくらべて 8 倍ほど詳しい索引が得られたことになり ます。 ただし、このままだと索引ページがかなり長くなってし まうので、索引として出現するすべてのキーワードを図 10 のようにまとめてもよいでしよう。こうしておけば、全文 検索システムでキーワードを入力する代わりに、キーワー ドをマウスでクリックするだけて検索できます。さらに、 1 http://QuickML.com/ 190 UNIX MAGAZINE 2003.9
図 2 Emacs のカーソル移動の言見明ページのソース (cursor. html) く html> く head> く tit1e>Emacs のカーソル操作く /title> く /head> く body> く hl > Emacs のカーソル操作く / 1 > 画面上のカーソルを行の先頭に動かすには Ctr1 ー A キーを、右端に動かすには Ctr1 ー E キーを使用します。 く h2 > く a name = " li Ⅱ e " > カーソルを行の左端 / 右端に動かすく / a > く / h2 > 画面上のカーソルを 1 文字左に動かすには Ct て 1 ー B キーを、右に動かすには Ctr1 ー F キーを使用します く h2 > く a Ⅱ ame = " 1r " > カーソルを左右に動かすく / a > く / h2 > 画面上のカーソルを 1 行上に動かすには Ctr1 ー P キーを、下に動かすには Ctr1 ー N キーを使用します。 く h2 > く a Ⅱ ame = " ud " > カーソルを上下に動かすく / a > く / h2 > 本資料では nacs のカーソル操作について説明します。 図 3 Emacs 操作の索引テキスト cursor C1-lrSOr cursor cursor C1-lrSOr cursor C1.-trSOr . html . html . html#ud . html#ud html#ud . html#ud . html#ud . html#lr . html#lr . html#lr . html#line . html#line . html#line . html#line . html#line . html#line . html#line . html#para . html#para . html#word . html#word . html#blink . html#color 索引テキストの準備 [ カーソル ] の [ 操作 ] [ カーソル ] を [ 動かす ] [ カーソル ] を [ 上下 ] に [ 動かす ] [ カーソル ] を [ 上 ] に [ 動かす ] [ カーソル ] を [ 下 ] に [ 動かす ] [ カーソル ] を [ 次 ] の [ 行 ] に [ 動かす ] [ カーソル ] を [ 前 ] の [ 行 ] に [ 動かす ] [ カーソル ] を [ 左右 ] に [ 動かす ] [ カーソル ] を [ 左 ] に [ 動かす ] [ カーソル ] を [ 右 ] に [ 動かす ] [ カーソル ] を [ 行頭 ] に [ 動かす ] [ カーソル ] を [ 行 ( ぎよう ) ] の [ 先頭 ] に [ 動かす ] [ カーソル ] を [ 行 ( ぎよう ) ] の [ 左端 ] に [ 動かす ] [ カーソル ] を [ 行末 ] に [ 動かす ] [ カーソル ] を [ 行 ( ぎよう ) ] の [ 最後 ] に [ 動かす ] [ カーソル ] を [ 行 ( ぎよう ) ] の最 [ 後尾 ] に [ 動かす ] [ カーソル ] を [ 行 ( ぎよう ) ] の [ 右端 ] に [ 動かす ] [ カーソル ] を [ 次 ] [ パラグラフ ] に [ 動かす ] [ カーソル ] を [ 前 ] [ パラグラフ ] に [ 動かす ] [ カーソル ] を [ 次 ] の [ 単語 ] に [ 動かす ] [ カーソル ] を [ 前 ] の [ 単語 ] に [ 動かす ] [ カーソル ] の [ 点減 ] を [ 制御 ] [ カーソル ] に [ 色 ( いろ ) ] をつける 図 4 単語置換え 単語の置換えや Permuted lndex の処理が簡単におこ なえるように、キーワードの区切りを明示したテキストを 索引に使用することにします。 さきはどの図 1 の Web ページには、、、カーソルを上下 に動かす " という項目名と、、カーソルを 1 行上に動かす " のような説明文か書いてあります。これらに加えて、、、カ ーソルを上に移動力ーソルを次の行に移動 " といった テキストも別表現として記しておきます。 図 3 のテキストに対して、図 4 の単語置換え辞書を適用 して展開すると、、、カーソルを上下に移動 " のようなテキ ストか得られます。また、角括弧の部分で区切って per- UNIX MAGAZINE 2003.9 動かす ノ、ラグラフ 移動 段落 muted lndex を生成すれは、 ・カーソルを上下に動かす ・上下に動かす , カーソルを ・動かす , カーソルを上下に ・カーソルを上下に移動 ・一にドに移動 , カーソルを ・移動 , カーソルを一にドに インターフェイスの街角 189
0 \ index { カーソルを移動する } \index{ 移動する ! カーソル } \ index { 動かす ! カーソル } な表現に展開しておけは、より充実した索引か得られるは て解説しました。索引を作成する場合も、索引項目を多様 な表現に展開したものに対して検索をおこなう手法につい 2002 年 2 月号で、検索対象となるテキストをいろいろ 展開索引の生成 目を自勺に作成できるでしよう。 現から、、カーソル動かす , カーソル " といった索引項 同様の手法を使えは、、、カーソルを動かす " のような表 い出せなくても検索に成功するというわけです。 ッじ、 しておきます。そうすれは、単語の途中の、、 1 。 ng " しか田 のように分解し、それぞれを索引の v 、 1 、 f の場所に配置 ・ function, very-long- long-function, very- ・ very-long- function という名前の関数についての索引であれは、 のがよく使われています。たとえは very-long-function 目を部分文字列でソートした Permuted lndex というも Emacs Lisp のマニュアルなどでは、索引に入れる項 Permuted lndex は、やはりかなりの大イ」 : 事てす。 いろいろなキーワードや表現を用いて索引を充実させるの て索引データを自動生成することができます。とはいえ、 このように、では makeindex の基幾能を使っ \end{theindex} \subitem カーソル , 1 \item 動かす \indexspace \subitem カーソル , 1 \item 移動する \indexspace \item カーソルを移動する , 1 \begin{theindex} 理すると、以下のような形式の索引力碍られます。 生成された idx ファイルを makeindex コマンドで処 図 1 Emacs のカーソル移動の説明ページ . ーファイルの集 0 表示ジャンプ 0 ブカマーク ( 印ツールウインドウ Emacs のカーソル操作 本資料でま歸懿 s のカーソルこついて税日肥ます。 カーソルを上下に動かす En に cs のカーソル障作 - N いを ヘルプ たとえは、 188 、、カーソルを動かす " に索引をつける場合、 画面上のカーソルを 1 行上こ勒かすコま 0 ト P キーを下こかすコは C ⅵ - N キーを使 - ます。 カーソルを左右 ( こ動かす 画面上のカーソルを 1 文字左に勒かすにはト B キーを右にかすコは朝市 F キーを使 - す。 カーソルを行の左端 / 右端に動かす 画面上のカーソルを行の先こかすコま C セト A キーを右こかすコⅵ - E キーを使ます。 Q$ ロュメント : 完ア ( 皿田 ) 言換え辞書を用意し、、、カーソルを移動する " のような ~ を動かす " は、、 ~ を移動する " と同義であるという UNIX MAGAZINE 2003.9 けることかできるでしよう。 なうまでもなく、、、移動 " を手掛かりにこのページをみつ このページへのリンクか張られていれは、全文検索をおこ りません。しかし、索引に、、移動 " というエントリがあり、 ワードにして全文検索を実行しても、このページはみつか がカーソルを動かす方法を調べようとして、、移動 " をキー 、、移動 " という単語はありません。したがって、ユーサー 図 2 のソースを見れは分かるように、このページには ことを考えてみましよう。 曰列として、図 1 のような Web ページに索引をつける も役立っことがあるはすです。 ません。よくできた索引を用意しておけば、全文検索より かもしれませんが、前述のように全文検索は万能ではあり 全文検索機能があるから索引などイだという考えなの してあるサイトはあまりみかけません。 みかけます。しかし、鶚籍の索引に相当するべージを用意 や左右の枠内に表示されるように構成されたページをよく を使って、籍の目次に相当する部分がつねに画面の上段 去も匠の大規模な Web サイトでは、く table 〉などの機能 Web ページの索引 索引か作れます。 という処理をおこなえは、それはど手間をかけすに緻密な Permuted lndex を生成する 、、動かす , カーソル " 、、移動する , カーソル " のような テキストを生成する